#define DEBUG
#include <cstdio>

using namespace std;

const int maxn=16, maxl=15, maxs=65536;

int max(int a, int b) {
  return a>b ? a : b;
}

int main() {
#ifdef DEBUG
  freopen("0.in", "r", stdin);
  freopen("0.out", "w", stdout);
#endif

  static int l[maxn], f[maxs];
  static bool g[2][maxs][maxn*maxl+1];
  int n, sum=0, len=1;
  scanf("%d", &n);
  for (int i=0; i<n; i++) {
    scanf("%d", l+i);
    sum += l[i];
    len *= 2;
  }

  for (int i=0; i<len; i++) {
    f[i]=0;
    for (int k=0; k<n; k++) {
      f[i] += l[k]*((i>>k)&1);
    }
    g[0][i][f[i]]=true;
    for (int j=1; j<=sum; j++) {
      for (int k=0; k<n && !g[0][i][j]; k++) {
	if ((i>>k)&1) {
	  g[0][i][j] = g[0][i][j] || g[0][i-(1<<k)][j];
	}
      }
    }
  }
  for (int i=0; i<len; i++) {
    if (f[i]%2==0 && g[0][i][f[i]/2]) {
      g[1][i][f[i]/2]=true;
    }
    for (int j=1; j<=sum/2; j++) {
      for (int k=0; k<n && !g[1][i][j]; k++) {
	if ((i>>k)&1) {
	  g[1][i][j] = g[1][i][j] || g[1][i-(1<<k)][j];
	}
      }
    }
  }

  int ans=0;
  for (int i=1; i<len; i++) {
    if (f[i]%2==0 && g[1][i][f[i]/2]) {
      for (int j=1; j<=sum/2; j++) {
	if (g[1][len-1-i][j]) {
	  ans = max(ans, f[i]/2*j);
	}
      }
    }
  }
  if (ans==0) {
    printf("No Solution");
  } else {
    printf("%d", ans);
  }

  fclose(stdin);
  fclose(stdout);
}
